package com.kx.push.quartz.job;

import com.kx.base.util.SpringContentUtil;
import com.kx.push.mapper.IdemMapper;
import com.kx.push.pojo.IdemExample;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

/**
 * 定时任务
 * 因为雪花算法生成的全局唯一id记录表，一直生成表数据会越来越大，
 * 所以应该创建定时任务，定时删除部分表数据
 *
 * @Author Sun
 * @Date 2021/7/30 17:52
 */
public class IdemDelJob implements Job {

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        delIdemData();
    }

    private IdemMapper idemMapper;

    /**
     * 删除表中Idem
     */
    public void delIdemData() {
        if (idemMapper == null) {
            //从容器中获取对象
            idemMapper = SpringContentUtil.getBean(IdemMapper.class);
        }
        if (idemMapper == null) {
            return;
        } else {
            //删除三分钟之前数据中的数据
            IdemExample example = new IdemExample();
            IdemExample.Criteria criteria = example.createCriteria();
            //获取3分钟前的时间节点
            Long time = System.currentTimeMillis() - 1000 * 60 * 3;
            //设置条件小于三分钟之前的那个时间点就删除数据
            criteria.andTimeLessThan(time);
            idemMapper.deleteByExample(example);
        }
    }
}
